<?php
/**
 * Modelo CRUD de clientes para sistemas tipo Cliente
 * @author Emanuel Melo e Renato Lenz @ PC4 Team
 */
class PC4_Crud_Newsletter_Cliente extends PC4_Crud_Cliente {
	
	/**
	 * Construtor
	 */
	function __construct($tabela = 'clientes') {
		parent::__construct($tabela);
	}

	/**
	 * Executa uma consulta retornando os dados do cliente
	 * @param int $pagina
	 * @param int $registros
	 */
	function lista($pagina = 1, $limite = 20) {
		$this->db->select(
			" c.*,
			  (
			    SELECT
			      IFNULL(SUM(valor),0)
			    FROM
			      creditos c2
			    WHERE
			      c.id = c2.id_clientes
			  ) AS total_creditos"
		, false);
		
		$rs = parent::lista($pagina, $limite);
		return $rs;
	}
	
	/**
	 * Apaga um registro
	 * @param int $id
	 */
	function apaga($id) {
		$lista_model = new PC4_Crud_Newsletter_Lista();
		$destinatarios_model = new PC4_Crud_Newsletter_Destinatario();
		$mensagens_model = new PC4_Crud_Newsletter_Mensagem();
		$credito_model = new PC4_Crud_Newsletter_Credito();
		$requisicao_palavra_model = new PC4_Crud_Newsletter_RequisicaoPalavraChave();
		$palavras_chave_model = new PC4_Crud_Newsletter_PalavraChave();
		$avisos_model = new PC4_Crud_Newsletter_Aviso();
		$usuarios_clientes_model = new PC4_Crud_Newsletter_UsuarioCliente();
		$operacoes_sistema_model = new PC4_Crud_Newsletter_OperacaoSistema();
		
		$lista_model->apagaPorCliente($id);
		$destinatarios_model->apagaPorCliente($id);
		$mensagens_model->apagaPorCliente($id);
		$credito_model->apagaPorCliente($id);
		$requisicao_palavra_model->apagaPorCliente($id);
		$palavras_chave_model->apagaPorCliente($id);
		$avisos_model->apagaPorCliente($id);
		$usuarios_clientes_model->apagaPorCliente($id);
		$operacoes_sistema_model->apagaPorCliente($id);
		
		return parent::apaga($id);
	}
	
	/**
	 * Apaga todos os relacionamentos de clientes com palavras-chave quando um cliente é apagado
	 * @param int $id
	 * @return boolean
	 */
	function apagaRelPorCliente($id){
		$this->db->delete("clientes_rel_palavras_chaves", array('id_clientes', $id));
		return true;
	}

		/**
	 * Altera o modo como os registros aparecerão para o usuário
	 * @param object $registro
	 * @return object de registros alterados
	 */
	function trataRegistro($registro) {
		$registro = parent::trataRegistro($registro);
		$registro->data_contrato = sql2date($registro->data_contrato);
		
		return $registro;
	}
	
}
?>